import axios from 'axios';
import { Dialog, Toast } from 'vant';

// create an axios instance
const service = axios.create({
  // baseURL: 'http://192.168.31.54:8082/', // api 的 base_url
  baseURL: 'http://ctmingyi.com:8082/', // api 的 base_url
  timeout: 10000 // request timeout
});

// request interceptor
service.interceptors.request.use(
  config => {
    if (!config.headers['X-Litemall-Token']) {
      config.headers['X-Litemall-Token'] = `${window.localStorage.getItem(
        'Authorization'
      ) || ''}`;
    }
    return config;
  },
  err => Promise.reject(err)
);

// const requestBefore = config => {
//   config.params = {
//     userId: 1
//     //在这里写你的公共参数
//   };
//   return config;
// };

// service.interceptors.request.use(requestBefore);

// 拦截器请求拦截
// 请求的拦截器
service.interceptors.request.use(
  function (config) {
    // 获取用户id
    var shopUserId = localStorage.getItem('shopUserId');
    // 如果是post请求就把默认参数拼到data里面
    // 如果是get请求就拼到params里面
    if (config.method === 'post') {
      config.params = {
        userId: shopUserId
      };
    } else if (config.method === 'get') {
      config.params = {
        userId: shopUserId,
        ...config.params
      };
    }
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);

// response interceptor 拦截器响应拦截
service.interceptors.response.use(
  response => {
    const res = response.data;

    if (res.errno === 501) {
      Toast.fail('请登录');
      setTimeout(() => {
        // window.location = '#/login/';
        mui.openWindow({
          url: '/login.html',
          id: 'login.html'
        });
      }, 500);
      return Promise.reject('error');
    } else if (res.errno === 502) {
      Toast.fail('网站内部错误，请联系网站维护人员');
      return Promise.reject('error');
    }
    if (res.errno === 401) {
      Toast.fail('参数不对');
      return Promise.reject('error');
    }
    if (res.errno === 402) {
      Toast.fail('参数值不对');
      return Promise.reject('error');
    } else if (res.errno !== 0) {
      // 非5xx的错误属于业务错误，留给具体页面处理
      return Promise.reject(response);
    } else {
      return response;
    }
  },
  error => {
    console.log('err' + error); // for debug
    Dialog.alert({
      title: '警告',
      message: '网络异常请重试'
    });
    return Promise.reject(error);
  }
);

export default service;
